#pragma once
#include "kernel/feSingleton.h"

#define J0_SIZE 500000
#define J0_MAX 1000.0


class BesselFunctions : public feSingleton<BesselFunctions>
{
	double J0func[J0_SIZE];
	double J1func[J0_SIZE];
	double Arg[J0_SIZE];

	double LastX;
	double LastL1;
	double LastL2;

protected:
	
	void Init();

public:
	BesselFunctions();

	

	double J0(double iX);
	double J1(double iX);
	double StruveH0(double iX);
	double StruveH1(double iX);
};
